package generic05;

import java.util.ArrayList;
import java.util.Collection;
/*
*     增强for上使用泛型
*       for(要遍历的容器中元素的类型 变量名 : 数组/集合){
*              //取出元素
* */
public class Demo01 {
    public static void main(String[] args) {
        //method01();
        Collection<String> c  = new ArrayList<String>();
        c.add("abc");
        // c.add(123);  因为泛型确定为String类型，所以其他类型加不进去
        c.add("efg");
        for (String s : c) {   // 此时元素类型都被限定为String类型
            System.out.println(s);
        }
    }

    private static void method01() {
        Collection c  = new ArrayList(); // 由于创建集合对象没有指定的泛型的类型
        // 此时Collection<E> 被替换成Object类型，而add(E e)上用到接口上的泛型
        // 所以E也被替换成Object
        c.add("abc"); // Object e = new Integer(123);
        c.add("123"); // Object e = "abc";
        c.add("efg"); // Object e = "efg"

        for(Object s:c){                 // abc
            System.out.println(s);       // 123
        }                                // efg
    }
}
